// rpcServerStore project rpcServerStore.go
package rpcServerStore

import (
	"fmt"
	"net"
	"net/rpc"
	"net/rpc/jsonrpc"
	"os"
)

func NewRpcServerStore() *RpcServerStore {
	return &RpcServerStore{}
}

type RpcServerStore struct {
}

func (p *RpcServerStore) StartMonitor() {
	datastore := new(DataStore)
	rpc.Register(datastore)
	tcpAddr, err := net.ResolveTCPAddr("tcp", "192.168.2.13:54322")
	p.checkError(err)

	listener, err := net.ListenTCP("tcp", tcpAddr)
	p.checkError(err)
	for {
		conn, err := listener.Accept()
		if err != nil {
			continue
		}
		go jsonrpc.ServeConn(conn)
	}
}

func (p *RpcServerStore) checkError(err error) {
	if err != nil {
		fmt.Println("Fatal error ", err.Error())
		os.Exit(1)
	}
}
